﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Persistente.Cabelo
{
    public class PTipoCabelo
    {
        private DB_SIMETRIA _db;
        private SqlConnection _conexao = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_SIMETRIA_SQL"].ConnectionString);


        public bool Salvar(string nmTipoCabelo, string dsTipoCabelo)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var tbTipoCabelo = new tb_tipo_cabelo();
                tbTipoCabelo.nm_tipo_cabelo = nmTipoCabelo;
                tbTipoCabelo.ds_tipo_cabelo = dsTipoCabelo;
                _db.AddTotb_tipo_cabelo(tbTipoCabelo);
                _db.SaveChanges();

                return true;

            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public DataSet pegarTipoCabelo(string nmTipoCabelo = null, string dsTipoCabelo = null)
        {
            var ds = new DataSet();

            string query = "SELECT ";
            query += " id_tipo_cabelo";
            query += ", nm_tipo_cabelo";
            query += ", ds_tipo_cabelo";
            query += " FROM tb_tipo_cabelo";

            query += " WHERE 1 = 1";


            if (!string.IsNullOrEmpty(nmTipoCabelo))
            {
                query += " AND nm_tipo_cabelo LIKE '%" + nmTipoCabelo + "%'";
            } if (!string.IsNullOrEmpty(dsTipoCabelo))
            {
                query += " AND ds_tipo_cabelo LIKE '%" + dsTipoCabelo + "%'";
            }

            var cmd = new SqlCommand(query, _conexao);

            cmd.Connection = _conexao;

            if (_conexao.State == ConnectionState.Closed)
            {
                _conexao.Open();
            }

            var dataAdapter = new SqlDataAdapter(cmd);
            dataAdapter.Fill(ds);

            _conexao.Close();

            return ds;
        }

        public bool Remover(int idTipocabelo)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var obTbTipoCabelo = _db.tb_tipo_cabelo.Where(q => q.id_tipo_cabelo == idTipocabelo).FirstOrDefault();
                if (obTbTipoCabelo == null)
                {
                    return false;
                }
                else
                {
                    _db.tb_tipo_cabelo.DeleteObject(obTbTipoCabelo);
                    _db.SaveChanges();
                    return true;
                }

            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public tb_tipo_cabelo pegarTipoCabeloPorId(int idTipoCabelo)
        {
            try
            {
                _db = new DB_SIMETRIA();
                return _db.tb_tipo_cabelo.Where(q => q.id_tipo_cabelo == idTipoCabelo).FirstOrDefault();
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public bool Alterar(int idTipoCabelo, tb_tipo_cabelo obTbTipoCabeloNovo)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var obTbTipoCabeloVelho =
                    _db.tb_tipo_cabelo.Where(q => q.id_tipo_cabelo == idTipoCabelo).FirstOrDefault();

                obTbTipoCabeloVelho.nm_tipo_cabelo = obTbTipoCabeloNovo.nm_tipo_cabelo;
                obTbTipoCabeloVelho.ds_tipo_cabelo = obTbTipoCabeloNovo.ds_tipo_cabelo;

                _db.SaveChanges();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                _db.Connection.Close();
            }
        }
    }
}
